home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 003 / db3debug.arc / DEBUGGER.PRG < prev    next >
Encoding:
Text File  |  1986-04-29  |  3.6 KB  |  158 lines

  1. *********DEBUGGER.PRG
  2. CLEAR
  3. SET TALK OFF
  4. SET EXACT OFF
  5. SET SAFETY OFF
  6. SET INTENSITY ON
  7. PROGNAME = SPACE(12)
  8. @ 5,5 SAY 'PROGRAM NAME : ' GET PROGNAME
  9. READ
  10. CLEAR
  11. ? 'PLEASE WAIT WHILE I SEARCH FOR THE FILE...'
  12. IF .NOT. '.' $(PROGNAME)
  13.    PROGNAME = TRIM(PROGNAME)+".PRG"
  14. ENDIF
  15. PROGNAME = UPPER(PROGNAME)
  16. FILNAME = SUBSTR(PROGNAME,1,AT(".",PROGNAME)-1)
  17. USE DEBUGGER
  18. ZAP
  19. APPEND FROM &PROGNAME SDF
  20. GO TOP
  21. STORE " " TO ANS
  22. STORE 0 TO DOCASCNT
  23. STORE 0 TO DOWHICNT
  24. STORE 0 TO ENCASCNT
  25. STORE 0 TO ENDDOCNT
  26. STORE 0 TO ENDIFCNT
  27. STORE 0 TO IFCNT
  28. STORE 0 TO INDENT
  29. STORE 0 TO TAB
  30. CLEAR
  31.  
  32. DO WHILE .NOT. EOF()
  33.    MEMVAR = TRIM(LINELOCATE)
  34.    DO WHILE SUBSTR(MEMVAR,1,1) = " "
  35.       MEMVAR = SUBSTR(MEMVAR,2,LEN(MEMVAR)-1)
  36.    ENDDO
  37.    IF MEMVAR = "'" .OR. '"' $MEMVAR .OR. "*" $MEMVAR .OR."(" $MEMVAR
  38.       PLACE = AT(" ",MEMVAR)
  39.       MEMVAR = UPPER(SUBSTR(MEMVAR,1,PLACE))+;
  40.       SUBSTR(MEMVAR,PLACE+1,LEN(MEMVAR)-PLACE+1)
  41.    ELSE
  42.       STORE UPPER(MEMVAR) TO MEMVAR
  43.    ENDIF
  44.    STORE .F. TO ADDONE,NOTADONE
  45.    STORE .F. TO ELSE2,CASE2,TEXT
  46.    DO CASE
  47.       CASE MEMVAR = "CASE" .OR. MEMVAR = "OTHE"
  48.                STORE .T. TO CASE2
  49.       CASE MEMVAR = "DO CASE"
  50.                STORE DOCASCNT +1 TO DOCASCNT
  51.                TAB = 8
  52.                ADDONE = .T.
  53.  
  54.       CASE MEMVAR = "DO WHIL"
  55.            STORE DOWHICNT +1 TO DOWHICNT
  56.            TAB = 3
  57.            ADDONE = .T.
  58. è      CASE MEMVAR = "ELSE"
  59.                ELSE2 = .T.   
  60.       CASE MEMVAR = "ENDC"
  61.                STORE ENCASCNT +1 TO ENCASCNT
  62.                INDENT = INDENT -8
  63.  
  64.       CASE MEMVAR = "ENDD"
  65.                STORE ENDDOCNT +1 TO ENDDOCNT
  66.                INDENT = INDENT -3
  67.       CASE MEMVAR = "ENDI"
  68.                STORE ENDIFCNT +1 TO ENDIFCNT
  69.                INDENT = INDENT -3
  70.  
  71.       CASE MEMVAR = "IF "
  72.                STORE IFCNT+1 TO IFCNT
  73.                TAB = 3
  74.                ADDONE = .T.
  75.  
  76.       CASE MEMVAR = "TEXT"
  77.                STORE .T. TO TEXT
  78.    ENDCASE
  79.    REPLACE LINELOCATE WITH SPACE(INDENT)+MEMVAR
  80.    IF ELSE2
  81.           INDENT = INDENT - TAB
  82.           REPLACE LINELOCATE WITH SPACE(INDENT) + MEMVAR
  83.           INDENT = INDENT + TAB
  84.    ENDIF
  85.    IF CASE2
  86.           INDENT = INDENT - 5
  87.           REPLACE LINELOCATE WITH SPACE(INDENT) + MEMVAR
  88.           INDENT = INDENT +5
  89.    ENDIF
  90.    IF ADDONE
  91.           INDENT=INDENT + TAB
  92.    ENDIF
  93.    REPLACE LINELOCATE WITH TRIM(LINELOCATE)
  94.    ? TRIM(LINELOCATE)
  95.    IF TEXT
  96.           SKIP
  97.           DO WHILE .NOT. "ENDT" $(UPPER(LINELOCATE))
  98.               ? TRIM(LINELOCATE)
  99.               SKIP
  100.           ENDDO (MEMVAR # ENDTEXT)
  101.           ELSE
  102.               SKIP
  103.    ENDIF
  104. ENDDO
  105. BAKNAME = FILNAME + ".XXX"
  106. IF FILE(BAKNAME)
  107.        ERASE &BAKNAME
  108. ENDIF (BAKNAME)
  109. RENAME &PROGNAME TO &BAKNAME
  110. COPY TO &PROGNAME DELIM WITH BLANK
  111. CLEAR
  112. ?
  113. ? "DO WHILE STATEMENTS :",DOWHICNT
  114. ? "ENDDO STATEMENTS    :",ENDDOCNT
  115. èIF DOWHICNT # ENDDOCNT
  116.        ?? "  <<<--PAIR NOT MATCHED---"
  117. ENDIF (DOWICNT)
  118. ?
  119. ? "IF STATEMENTS       :",IFCNT
  120. ? "ENDIF STATEMENTS    :",ENDIFCNT
  121. IF IFCNT # ENDIFCNT
  122.        ?? "  <<<--PAIR NOT MATCHED---"
  123. ENDIF (IFCNT)
  124. ?
  125. ? "DO CASE STATEMENTS  :",DOCASCNT
  126. ? "ENDCASE STATEMENTS  :",ENCASCNT
  127. IF DOCASCNT # ENCASCNT
  128.        ?? "  <<<--PAIR NOT MATCHED---"
  129. ENDIF (DOCASCNT)
  130. ?
  131. ?
  132. ?
  133. ?
  134. ?
  135. ? " THE DEBUGGED PROGRAM FILE IS NOW STORED UNDER THE NAME &PROGNAME"
  136. ?
  137. ? " THE ORIGINAL PROGRAM FILE IS NOW STORED UNDER THE NAME &BAKNAME"
  138. ? " FOR YOUR EDITING PURPOSES."
  139. ?
  140. @ 20,3
  141. WAIT " WOULD YOU LIKE A HARDCOPY OF DEBUGGED PROGRAM FILE? Y/N" TO ANS
  142. IF ANS <> "Y"
  143.    CLEAR
  144.    RETURN
  145. ENDIF
  146. SET PRINT ON
  147. ?
  148. ? " PROGRAM NAME : "+PROGNAME
  149. ?
  150. GO TOP
  151. DO WHILE .NOT. EOF()
  152.    LIST
  153. ENDDO
  154. EJECT
  155. SET PRINT OFF
  156. SET TALK ON
  157. CLOSE DATABASES
  158. CLEAR
  159. RETURN
  160.